Tip/Trick: Using ScriptManager ScriptPath to load MicrosoftAjax.js from file system
This isn’t particularly tricky but it can be non-obvious.
If you don’t want to use the embedded resources to serve the Microsoft AJAX JavaScript runtime, but instead you want to have them served from the file system, to make JavaScript debugging more pleasant, then this is what you need to do:
Create a directory structure under your web application's root directory
You’ll need to create a directory structure that corresponds to the attributes of the assembly that normally contains the script files. In your case you’ll can create a subdirectory structure in your web site like this:
Scripts\Microsoft.Web.Extensions\1.0.61025.0
The top directory doesn’t have to be called Scripts
you can call it anything you wish. Since MicrosoftAjax.js
is in the Microsoft.Web.Extensions
assembly, this is why the second directory level is called Microsoft.Web.Extensions
. The final directory is the version number of the DLL. You can see this from your web.config
:
<compilation debug="false"> <assemblies> <add assembly="Microsoft.Web.Extensions, Version=1.0.61025.0, ..."/> </assemblies> </compilation>
Copy the ASP.NET AJAX JavaScript runtime files
When you installed ASP.NET AJAX you’ll have had the ASP.NET AJAX JavaScript source files installed, by default into:
C:\Program Files\Microsoft ASP.NET\ASP.NET 2.0 AJAX Extensions\v1.0.61025\ScriptLibrary\Debug
and
C:\Program Files\Microsoft ASP.NET\ASP.NET 2.0 AJAX Extensions\v1.0.61025\ScriptLibrary\Release
Copy MicrosoftAjax.js
from the Debug
directory into your Scripts\Microsoft.Web.Extensions\1.0.61025.0
directory, and rename it to Microsoft.Web.Resources.ScriptLibrary.MicrosoftAjax.debug.js
. Then do the same for MicrosoftAjaxTimer.js
and MicrosoftAjaxWebForms.js
following the same pattern of adding “Microsoft.Web.Resources.ScriptLibrary.” to the start of the filename, and then adding “.debug” in front of the “.js”.
Also copy the same files from the Release
directory but this time rename them without adding the “.debug” in front of the “.js”.
Now the source files will be picked up whether or not you are running in debug mode.
Set the ScriptPath on your ScriptManager
Finally, set the ScriptPath
property on ASP.NET ScriptManager to tell it to source the ASP.NET AJAX runtime from your new directory:
<asp:ScriptManager ID="sm1" runat="server" ScriptPath="~/Scripts"> </asp:ScriptManager>
Verifying that the JavaScript files are being served from files
If you do a “View Source” in Internet Explorer you should see the JavaScript files being included from the appropriate location:
<script src="Scripts/Microsoft.Web.Extensions/1.0.61025.0/ Microsoft.Web.Resources.ScriptLibrary.MicrosoftAjax.js" type="text/javascript"></script>